Сервис микроконтроллера

Tsmsms - это Linux-сервис, выполняющий следующие функции:

  • Опрос микроконтроллера по текстовому протоколу на логическом порту
  • Переключение Сим-карты программно
  • Хранение состояния контролируемых параметров микроконтроллера
  • Предоставление программного интерфейса для других модулей системы

Структура файлов сервиса

Имя файла Предназначение
app.lua Точка входа, основной файл, запускаемый сервисом в автозагрузке устройства
note.lua Содержит константы - сообщения для веб-интерфейса пользователя
lock.lua Содержит вспомогательные функции, реализующие режим занят/свободен
notifier.lua Информирует на шине UBUS о выполненных командах микроконтроллера
reset.lua Выполняет пошаговую процедуру переподключения модема для поиска сим-карты в слоте
stm.lua Обращается к микроконтроллеру через логический порт /dev/ttyS
switch.lua Выполняет пошаговую процедуру переключения активного слота Сим-карт
/teststm Подкаталог содержит набор автотестов

Предоставление программного интерфейса

Управление сервисом осуществляется при помощи методов шины UBUS

ubus -v list tsmstm

Возможные запросы к UBUS:

  • send (отправка произвольной STM-команды)
  • switch (переключить слот сим-карты)
  • reset (включить процесс сброса Модема)

Примеры результата:

root@BITCORD-RTR-2:~# ubus -v list tsmstm 
'tsmstm' @a6acafc4
"send":{"command":"String","owner":"String"}
"switch":{"simid":"String","owner":"String"}
"reset":{"owner":"String"}
root@BITCORD-RTR-2:~#

ubus call tsmstm send

Отправка произвольной команды микроконтроллеру согласно спецификации:

ubus call tsmstm send '{"name":"command","details":"~0:SIM.SEL=?"}'

Пример результата:

root@BITCORD-RTR-2:~# ubus call tsmstm send '{"command":"~0:SIM.SEL=?"}'
{
    "answer": "0\nOK\n",
    "note": "Запрос: какая из SIM активна",
    "stdout": "nil",
    "command": "~0:SIM.SEL=?"
}
root@BITCORD-RTR-2:~#

ubus call tsmstm switch

Переключает слот SIM-карт двухсимочного модема:

ubus call tsmstm switch '{"simid":"1"}'

При этом, сервис отправляет микроконтроллеру, отслеживаемую в режиме "debug", серию следующих команд:

root@BITCORD-RTR-2:~# tsmstm debug

Установить активной SIM 1:
9:45:47.14 [tsmstm]: Fire: [~0:SIM.SEL]: ~0:SIM.SEL=1 -> OK   

Снято разрешение питания модема:
9:45:49.16 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=0 -> OK  

Разрешено питание модема:
9:45:51.19 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=1 -> OK  

Подано питание на модем:
9:45:53.23 [tsmstm]: Fire: [~0:SIM.PWR]: ~0:SIM.PWR=0 -> OK

9:45:56.24 [tsmstm]: Slot switched to: 1

Пример результата:

root@BITCORD-RTR-2:~# ubus call tsmstm switch '{"simid":"1"}'
{
    "status": "started"
}
root@BITCORD-RTR-2:~#

ubus call tsmstm reset

Переподключает модем для поиска Сим-карты в слоте:

ubus call tsmstm reset

При этом, сервис отправляет микроконтроллеру, отслеживаемую в режиме "debug", серию следующих команд:

Снято разрешение питания модема:
9:28:3.52 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=0 -> OK

Разрешено питание модема:
9:28:5.57 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=1 -> OK

Подано питание на модем:
9:28:7.60 [tsmstm]: Fire: [~0:SIM.PWR]: ~0:SIM.PWR=0 -> OK  

9:28:9.81 [tsmstm]: Reset process completed. 

Пример результата:

root@BITCORD-RTR-2:~# ubus call tsmstm reset
{
    "status": "started"
}
root@BITCORD-RTR-2:~#

Журналирование работы сервиса Tsmstm

Осуществляется посредством правила 19_rule в сервисе Applogic. Пронаблюдать работу правила можно при помощи отладочной таблицы, а также, посредством веб-интерфейса.